package file;
/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 25397
 * Date: 2022-04-11
 * Time: 22:17
 */
import java.io.File;
import java.io.IOException;
import java.util.Scanner;


//案例1：实现查找文件并删除
public class Demo12 {
    public static void deleteFile(File f){//删除文件
        try {
            System.out.println("你确认要删除文件"+f.getCanonicalPath()+"吗？");
            System.out.println("请输入yes/no来进一步确认：");
            Scanner scanner=new Scanner(System.in);
            String choice=scanner.next();
            if(choice.contains("Y")||choice.contains("y")){
                f.delete();
                System.out.println("文件已删除");
            }else{
                System.out.println("删除操作已取消");
            }

        } catch (IOException e) {
            e.printStackTrace();
        }
    }


    public static void scanDir(File rootDir,String toDeleteName){//递归遍历并删除
        //1.先列出rootDir中有哪些内容
        File[] files=rootDir.listFiles();
        if(files==null){
            //rootDir是一个空目录
            return;
        }

        //不为空目录

        //2.遍历当前列出的这些内容，如果是普通文件，就检查文件名是否是要删除的文件
        //如果还是目录，就继续递归
        for(File f:files){
            if(f.isFile()){
                //普通文件的情况
                if(f.getName().contains(toDeleteName)){
                    //不要求名字完全一样，只要文件名中包含了关键字即可删除
                    deleteFile(f);
                }else if(f.isDirectory()){
                    //目录就继续递归遍历
                    scanDir(f,toDeleteName);
                }
            }
        }

    }

    public static void main(String[] args) {
        //1.先输入要扫描的目录，以及要删除的文件
        Scanner scanner=new Scanner(System.in);
        System.out.println("请输入要扫描的路径：");
        String rootDirPath=scanner.next();
        System.out.println("请输入要删除的文件名：");
        String toDeleteName=scanner.next();

        File rootDir=new File(rootDirPath);
        if(!rootDir.isDirectory()){
            System.out.println("输入的扫描路径有误，请重新输入：");
        }
        //2.遍历目录，目录是一个树形结构，我们用递归方式
        scanDir(rootDir,toDeleteName);

    }
}
